package model

import (
	"gorm.io/gorm"
	"service/basic/config"
	"time"
)

type Class struct {
	Id        uint           `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	Name      string         `gorm:"column:name;type:varchar(255);comment:课程名称;not null;" json:"name"`                                 // 课程名称
	Info      string         `gorm:"column:info;type:varchar(255);comment:课程简介;not null;" json:"info"`                                 // 课程简介
	Price     float64        `gorm:"column:price;type:decimal(10, 2);comment:课程价格;not null;" json:"price"`                             // 课程价格
	DisPrice  float64        `gorm:"column:dis_price;type:decimal(10, 2);comment:优惠价格;not null;" json:"dis_price"`                     // 优惠价格
	PayType   uint           `gorm:"column:pay_type;type:int UNSIGNED;comment:支付方式:1支付宝 2微信;not null;default:1;" json:"pay_type"` // 支付方式:1支付宝 2微信
	Stock     uint           `gorm:"column:stock;type:int UNSIGNED;comment:课程库存;not null;" json:"stock"`                               // 课程库存
	Status    uint           `gorm:"column:status;type:int UNSIGNED;comment:课程状态:1已上架 2已下架;not null;default:1;" json:"status"`   // 课程状态:1已上架 2已下架
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (c *Class) TableName() string {
	return "class"
}

func (c *Class) Create() error {
	return config.DB.Create(&c).Error
}

// 查找课程
func (c *Class) GetClassInfoId() error {
	return config.DB.Where("id = ?", c.Id).Limit(1).Find(&c).Error
}

// 扣减商品库存
func (c *Class) RemoveStock(stock int64) error {
	return config.DB.Where("id = ?", c.Id).Update("stock", gorm.Expr("stock - ?", stock)).Error
}
